
/******************************************************************************
* Copyright (C) 2021, BBI Technology Co.,Ltd All rights reserved.
*
* Author: Embedded software group
*
* file： bsp_gpio.c 
*
*
*Note：此文件位于bsp层
 ******************************************************************************/
#include "bsp_gpio.h"

/*
************************************************************************
*	函数名: BSP_KEY_GPIO_init
*	形  参：void
*	返回值: void
*	说  明: yis
************************************************************************
*/
void BSP_KEY_GPIO_init(void)
{
    stc_gpio_cfg_t stcGpioCfg;
    
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);
    
    ///< 端口方向配置->输入
    stcGpioCfg.enDir = GpioDirIn;
    ///< 端口驱动能力配置->高驱动能力
    stcGpioCfg.enDrv = GpioDrvL;
    ///< 端口上下拉配置->无
    //stcGpioCfg.enPu = GpioPuDisable;
    //stcGpioCfg.enPd = GpioPdDisable;
    ///< 端口开漏输出配置->开漏输出关闭
    stcGpioCfg.enOD = GpioOdDisable;
    ///< 端口输入/输出值寄存器总线控制模式配置->AHB
    stcGpioCfg.enCtrlMode = GpioAHB;
    ///< GPIO IO USER KEY初始化
    Gpio_Init(GPIO_KEY_Port, GPIO_KEY_Pin, &stcGpioCfg); 

    ///< 打开并配置按键端口为下降沿中断
    Gpio_EnableIrq(GPIO_KEY_Port, GPIO_KEY_Pin, GpioIrqFalling);
    EnableNvic(PORTA_IRQn, IrqLevel3, TRUE);
		
}


/*
************************************************************************
*	函数名: BSP_DCDC_CtrlPin_init
*	形   参：void
*	返回值: void
*	说   明: DCDC 使能引脚初始化,拉高使能
************************************************************************
*/
void BSP_DCDC_GPIO_init(void)
{
	stc_gpio_cfg_t stcGpioCfg; 
    ///< 打开GPIO外设时钟门控
    Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);  
    ///< 端口方向配置->输出
    stcGpioCfg.enDir = GpioDirOut;
    ///< 端口上下拉配置->下拉  
    stcGpioCfg.enPd = GpioPdEnable; 
	stcGpioCfg.enCtrlMode = GpioAHB;
    
    //Gpio_Init(GPIO_DCDC_Port, GPIO_DCDC_Pin, &stcGpioCfg);
	//Gpio_ClrIO(GPIO_DCDC_Port, GPIO_DCDC_Pin); // dcdc output pin
}


/**
 ***********************************************************************
 ** \brief   读阀门GPIO状态
 **
 ** \param   读取到位开关GPIO电平状态   
 ** 
 ** \retval  void                                  
 ***********************************************************************/
void BSP_VALVE_GPIO_Read(uint8_t *Status1,uint8_t *Status2)
{
	 *Status1 = READ_MOTO_STATUS1; // Gpio_GetInputIO(GPIO_MOTOSRead1_Port, GPIO_MOTOCRead1_Pin);
	 *Status2 = READ_MOTO_STATUS2;//Gpio_GetInputIO(GPIO_MOTOSRead2_Port, GPIO_MOTOCRead2_Pin);
}


void BSP_GDLED_PORT_init(void)
{
	Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio, TRUE);

	//Gd led
	M0P_GPIO->PBDIR |= 0X00F8;
	//Gd wheel
	M0P_GPIO->PADIR |= 0X9000;
	//Gd control
	M0P_GPIO->PDOUT_f.PD00 = 0;
	M0P_GPIO->PDDIR_f.PD00 = 0;
	//Gd adc
	M0P_GPIO->PADIR |= 0X00F0;
	M0P_GPIO->PAADS |= 0X00F0;//Analog
	M0P_GPIO->PBDIR |= 0X0002;
	M0P_GPIO->PBADS |= 0X0002;//Analog
}


///< PortA 中断服务函数
void PortA_IRQHandler(void)
{
    if(TRUE == Gpio_GetIrqStatus(STK_USER_PORT, STK_USER_PIN))
    {            
		//
        Gpio_ClearIrq(STK_USER_PORT, STK_USER_PIN);    
    }
}    


